
#include "lpm.h"
#include "wwdt.h"
#include "iwdt.h"

/******************************************************************************
 * Local variable definitions ('static')                                      *
 ******************************************************************************/
stc_wwdt_init_t gstcWwdtInit = {0};

#if 0
static void App_WdtInit(void)
{
    ///< 开启WWDT外设时钟
    SYSCTRL_PeriphClkEnable(SYSCTRL_PERICLK_WWDT);

    ///< WWDT 初始化
    ///< 溢出时间：T_wwdt= ((PCLK分频数 * (CR0.WCNT - 0x3F))/PCLK频率)
    ///< 本例为：(524288 *40/4000000) ≈ 5s 
    ///< 溢出时间约为5s,窗口时间约为3s
    gstcWwdtInit.u32PreOverInt = WWDT_PRE_INT_DISABLE;
    gstcWwdtInit.u32Counter    = 0x3Fu + 50u;
    gstcWwdtInit.u32Window     = 0x3Fu + 50u - 16u;
    gstcWwdtInit.u32Prescaler  = WWDT_PCLK_DIV_524288;
    WWDT_Init(&gstcWwdtInit);

}
#endif


static void App_WdtInit(void)
{
    stc_iwdt_init_t stcIwdtInit = {0};

    ///< 开启WDT外设时钟
    SYSCTRL_PeriphClkEnable(SYSCTRL_PERICLK_IWDT);

    ///< IWDT 初始化
    ///< IWDT 溢出时间 = (计数值(u32ArrCounter)/32800) * 分频系数(u32Prescaler)
    ///< 本例为：(3280/32800)*32 = 3.2s
    stcIwdtInit.u32Action = IWDT_OVER_RESET__SLEEPMODE_STOP;
    stcIwdtInit.u32ArrCounter = 3280;
    stcIwdtInit.u32Window     = 0xFFF;
    stcIwdtInit.u32Prescaler  = IWDT_RC10K_DIV_32;
    IWDT_Init(&stcIwdtInit);

}

void my_wdt_feed(void)
{
    // WWDT_Feed(gstcWwdtInit.u32Counter);
    //  delay1ms(500);
    IWDT_Feed();
}
 


void my_wdt_init(void)
{
    App_WdtInit();
    //  ///< 启动 WDT
    // WWDT_Start();

    ///< 启动 WDT
    IWDT_Start();

}


